//package demo.practice.trie;
//
//
//import java.util.*;
//
//class P212Trie {
//    Map<Character, P212Trie> child = new HashMap<>();
//    P212Trie[][] matrix;
//
//    public void insert(char[][] board) {
//        matrix = new P212Trie[board.length][board[0].length];
//        for (int i = 0; i < board.length; i++) {
//            for (int j = 0; j < board[0].length; j++) {
//                char c = board[i][j];
//
//                if(this.child.get(c)==null)
//                    this.child.put(c, new P212Trie());
//
//                matrix[i][j] = this.child.get(c);
//            }
//        }
//
//        for (int i = 0; i < board.length; i++) {
//            for (int j = 0; j < board[0].length; j++) {
//                char c = board[i][j];
//                P212Trie t = this.child.get(c);
//
//                if (i + 1 < board.length) {
//                    t.child.put(board[i + 1][j], matrix[i + 1][j]);
//                }
//
//                if (i - 1 >= 0) {
//                    t.child.put(board[i - 1][j], matrix[i - 1][j]);
//                }
//
//                if (j + 1 < board[0].length) {
//                    t.child.put(board[i][j + 1], matrix[i][j + 1]);
//                }
//
//                if (j - 1 >= 0) {
//                    t.child.put(board[i][j - 1], matrix[i][j - 1]);
//                }
//
//            }
//        }
//
//
//    }
//
//
//}
//
//
//public class P212_2 {
//    public static void main(String[] args) {
//        P212_2 p212 = new P212_2();
//        List<String> words = p212.findWords(new char[][]{{'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'}, {'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'}, {'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'}, {'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'}, {'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'}, {'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'}, {'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'},
//                {'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'}, {'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'},
//                {'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'}, {'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'},
//                {'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'}}, new String[]{"a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa", "aaaaaaa", "aaaaaaaa", "aaaaaaaaa", "aaaaaaaaaa"});
//    }
//
//    public List<String> findWords(char[][] board, String[] words) {
//
//        P212Trie t = new P212Trie();
//        long start = System.currentTimeMillis();
//        t.insert(board);
//        // System.out.println(System.currentTimeMillis() - start);
//        List<String> list = new ArrayList<>();
//
////        for (String word : words) {
////            if (t.serach(word))
////                list.add(word);
////        }
//        System.out.println(System.currentTimeMillis() - start);
//        return list;
//    }
//}
